//=======================================Copyright(c)===========================================
// 								  深圳易马达科技有限公司
//---------------------------------------文件信息----------------------------------------------
//文件名		: BootLoader.h
//创建人		: Handry
//创建日期	:
//描述	    : BootLoader头文件
//-----------------------------------------------当前版本修订----------------------------------
//修改人		:
//版本	    :
//修改日期	:
//描述	    :
//=============================================================================================

#ifndef __BOOTLOADER_H
#define __BOOTLOADER_H

//=============================================================================================
//包含头文件
//=============================================================================================
#include "BSPTypeDef.h"

//=============================================================================
//数据结构声明
//=============================================================================
#define     CAN_UPDATE_FAIL_TIME          1800000       //升级30分钟内都不成功，则强制进入休眠

//=============================================================================================
//声明变量，供外部使用
//=============================================================================================

//=============================================================================================
//宏定义
//=============================================================================================
#define 	BOOTLOADER_BASE     	0x08000000UL 				//BOOT层地址
#define 	APPLICATION_BASE    	0x08008000UL 				//应用层地址

#define 	BOOTLOADER_SIZE         APPLICATION_BASE-BOOTLOADER_BASE//(32UL*1024UL)
#define 	BOOTLOADER_START_ADDR   BOOTLOADER_BASE
#define 	APPLICATION_START_ADDR  APPLICATION_BASE

//#define		FLASH_PAGE_SIZE      	2048//1024           //Flash Memory page size

#define		MAX_FLASH_SIZE			(256UL*1024UL)		//最大FLASH内存	

#define 	BOOTLOADER_END_ADDR     (BOOTLOADER_START_ADDR + BOOTLOADER_SIZE)
//#define 	DEBUG_LOCK_WORD_ADDR    (0x0FE04000 + (127 * 4))
//#define 	USER_PAGE_START_ADDR    (0x0FE00000)
//#define 	USER_PAGE_END_ADDR      (0x0FE00200)
//#define 	LOCK_PAGE_START_ADDR    (0x0FE04000)
//#define 	LOCK_PAGE_END_ADDR      (0x0FE04200)

//#define 	DEVINFO_START_ADDR      (0x0FE081B0)
//#define 	DEVINFO_END_ADDR        (0x0FE08200)

#define 	MAX_SIZE_OF_FLASH       (256 * 1024)        //The maximum flash size of any part 

//=============================================================================================
//声明接口函数
//=============================================================================================

//=============================================================================================
//函数名称	: void BootloaderInit(void)
//输入参数	: void
//输出参数	: void
//静态变量	: void
//功    能	: BOOTLOADER初始化函数
//注    意	:
//=============================================================================================
void BootloaderInit(void);
	
//=============================================================================================
//函数名称	: void JumpToBootloader(void)
//输入参数	: void
//输出参数	: void
//静态变量	: void
//功    能	: 跳转到BOOTLOADER
//注    意	:
//=============================================================================================
void JumpToBootloader(void);

//=============================================================================================
//函数名称	: void JumpToApplication(void)
//输入参数	: void
//输出参数	: void
//静态变量	: void
//功    能	: 跳转到Application应用层
//注    意	:
//=============================================================================================
void JumpToApplication(void);

//=============================================================================================
//函数名称: void BootLoaderDealTask(void)
//输	入: void
//输	出: void
//静态变量:
//功	能: boot处理主函数
//=============================================================================================
void BootLoaderDealTask(void);

#endif

/*****************************************end of BootLoader.h*****************************************/
